package 剑指offer;

import java.util.Scanner;
import java.util.Stack;

/** 

* @author ：soulstones
* @version ：2019年9月30日 下午9:58:41 
* @Description：
* 
牛客最近来了一个新员工Fish，每天早晨总是会拿着一本英文杂志，写些句子在本子上。同事Cat对Fish写的内容颇感兴趣，有一天他向Fish借来翻看，但却读不懂它的意思。例如，“student. a am I”。后来才意识到，这家伙原来把句子单词的顺序翻转了，正确的句子应该是“I am a student.”。Cat对一一
的翻转这些单词顺序可不在行，你能帮助他么？
*/
public class A44翻转单词顺序序列 {

	//第一个想到的就是利用栈的先进后出的特性，进行反转
	 public static String ReverseSentence(String str) {
		 //trim()作用是去除掉字符串头尾两端的多余的空格（全部），但是字符串中间的空格不会去除
		if (str.trim().equals("") && str.length() > 0) {
			return str;
		}
		Stack<String> reverse = new Stack<>();
		String string = str.trim();
		String[] strings = string.split(" ");
		for (int i = 0; i < strings.length; i++) {
			reverse.push(strings[i]);
		}
		string = reverse.pop();
		while (!reverse.isEmpty()) {
			string = string + "" + reverse.pop();
		}
		return string;
	}
	 
	 
	public static String ReverseSentence11(String str) {

		if (str == null || str.length() == 0) {
			return str;
		}
		// 都是空格的情况，就没有必要翻转了
		String[] temp = str.split(" ");
		if (temp.length == 0) {
			return str;
		}
		String p = "";
		for (int i = temp.length - 1; i >= 0; i--) {
			if (i == 0) {
				p = p + temp[i];
			} else {
				p = p + temp[i] + " ";
			}
		}
		return p;

	}
	 
	        
	 public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String s = scanner.next();
		String reverseSentence = ReverseSentence(s);
		System.out.println(reverseSentence);
		System.out.println(ReverseSentence11(s));
	}
}
